package lesson2.com.animals;


// remember, Animal implicitly extends java.lang.Object
public abstract class Animal  {

//  since Animal is abstract it has one purpose:  to be the parent to children

// since Animal has no declared constructor, the compiler will
// insert into the bytecode a constructor that looks as follows

private String phyllum;
private String species;
private String genus;

private String animalClass;


public Animal(){
    super();   // not really necessary, compiler adds this
}


// abstract classes can have...

//  ANYTHING a concrete class has

public String getAnimalClass() {
return animalClass;
}

public void setAnimalClass(String animalClass) {
this.animalClass = animalClass;
}



public String getPhyllum() {
return phyllum;
}

public void setPhyllum(String phyllum) {
this.phyllum = phyllum;
}

public String getSpecies() {
return species;
}

public void setSpecies(String species) {
this.species = species;
}

public String getGenus() {
return genus;
}

public void setGenus(String genus) {
this.genus = genus;
}

// not required, but abstact classes can have abstract methods    

public abstract void walk();  // no body {} to an abstract method, just a semi-colon

}
